package com.munhrasoft.dinamica.converters;

import java.util.logging.Logger;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.munhrasoft.dinamica.business.entities.Imovel;
import com.munhrasoft.dinamica.business.logic.ClienteEJB;

@FacesConverter(value="imovelConverter")
public class ImovelConverter implements Converter {
	
	private static Logger logger = Logger.getLogger(ImovelConverter.class.getName());
	
	private ClienteEJB clienteEJB;
	
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {	
		
		
		logger.info("getAsObject Validation Result "+arg0.isValidationFailed());
		
		// Colocar mensagem de erro se nao achar o cliente, grande problema aqui
		// foi saber que converter nao aceita injecao de EJB, tem que fazer por lookup
		// por isso codigo abaixo. colocar o mesmo para todos os outros converters.
		
		try {
			clienteEJB = (ClienteEJB) new InitialContext().lookup("java:global/dinamica-control/ClienteEJB");
		} catch (NamingException e) {
			// TODO Incluir aqui uma mensagem comum pois algo fatal aconteceu
			e.printStackTrace();
		}
		
		if (arg2 == null){
			logger.info("getAsObject returns null");
			return null;
		}else{
			logger.info("getAsObject returns "+((Imovel)clienteEJB.imovelPorMatricula(arg2)).getMatricula());
			return clienteEJB.imovelPorMatricula(arg2);
		}
		
	}

	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {	
		
		logger.info("getAsObject Validation Result "+arg0.isValidationFailed());
		
		if (arg2 == null){
			logger.info("getAsString returns null");
			return null;
		}else{
			logger.info("getAsString returns "+((Imovel) arg2).getMatricula());
			return ((Imovel) arg2).getMatricula();
		}	
	}
}
